package com.yidu.action;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.pagehelper.PageInfo;
import com.yidu.common.JsonMsg;
import com.yidu.common.Tools;
import com.yidu.domain.ListenUserRole;
import com.yidu.service.ListenUserRoleService;

import java.text.ParseException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author LiuXiang
 * @since 2018-11-27
 */
@Controller
@RequestMapping("/listenUserRole")
public class ListenUserRoleController {
	@Resource
	private ListenUserRoleService roleService;
	
	
	/**
	 * 查询所有,条件查询,分页的方法
	 * @param page 分页对象
	 * @param pageSize 分页的工具
	 * @param buName 用户姓名
	 * @param roleName 角色名称
	 * @return 返回查询的数据
	 */
	@RequestMapping("/getAllState")
	@ResponseBody
	public Map<String, Object> getAllStore(Integer page, @RequestParam(value = "limit") Integer pageSize, @RequestParam(value = "key[buName]", required = false) String buName,@RequestParam(value = "key[roleName]", required = false) String roleName) {
		//创建用户角色对象
		ListenUserRole role = new ListenUserRole();
		//赋值用户姓名
		role.setBuName(buName);
		//赋值角色
		role.setRoleName(roleName);
		//创建用户角色map
        HashMap<String, Object> map = new HashMap<>();
        //放入分页参数进行查询
        PageInfo<ListenUserRole> list = roleService.findAll(page, pageSize,role);
        //创建用户角色list
        List<ListenUserRole> list2 = list.getList();
        map.put("code", 0);
        map.put("msg", "");
        map.put("count", list.getTotal());
        map.put("data", list2);
        //返回map
        return map;
	}
	/**
	 * 增加
	 * @param buId 用户id
	 * @param roleId 角色id
	 * @return 返回增加的数据
	 * @throws ParseException 异常
	 */
	@RequestMapping("add")
	@ResponseBody
	public JsonMsg add(@RequestParam(value = "buId")String buId,@RequestParam(value = "roleId")String roleId) throws ParseException{
		//创建消息对象
		JsonMsg msg = new JsonMsg();
		//创建用户角色对象
		ListenUserRole role = new ListenUserRole();
		//判断用户id不为空
		if(buId!=null && !"".equals(buId)){
			//调用根据用户id查询所有的方法
			List<ListenUserRole> list = roleService.selectByPrimaryKey(buId);
			//判断list为空调用判断方法或size为0
			if(list==null || list.isEmpty() || list.size()==0){
				//根据@分割
				String[] str = roleId.split("@");
				//循环数值
				for (int i = 0; i < str.length; i++) {
					//随机生成字符串40位赋值给用户角色id
					role.setUrId(Tools.getRandomString());
					//赋值用户id
					role.setBuId(buId);
					//分割后循环赋值角色id
					role.setRoleId(str[i]);
					//调用增加的方法
					int rows = roleService.insertSelective(role);
					//判断rows大于-1时增加成功
					if(rows>-1){
						msg.setMsg("增加成功");
					}else{
						msg.setMsg("增加失败");
					}
				}
			}
		}
		//返回消息
		return msg;
	}
	/**
	 * 修改
	 * @param buId 用户id
	 * @param roleId 角色id
	 * @return 返回修改的数据
	 * @throws ParseException 异常
	 */
	@RequestMapping("update")
	public JsonMsg update(@RequestParam(value = "buId")String buId,@RequestParam(value = "roleId")String roleId) throws ParseException{
		//创建消息对象
		JsonMsg msg = new JsonMsg();
		//创建用户角色对象
		ListenUserRole role = new ListenUserRole();
			//调用根据用户id删除的方法
			roleService.deleteByBuId(buId);
			//根据@分割
			String[] str = roleId.split("@");
			//循环数值
			for (int i = 0; i < str.length; i++) {
				//随机生成字符串40位赋值给用户角色id
				role.setUrId(Tools.getRandomString());
				//赋值用户id
				role.setBuId(buId);
				//分割后循环赋值角色id
				role.setRoleId(str[i]);
				//调用增加的方法
				int rows = roleService.insertSelective(role);
				//判断rows大于-1时修改成功
				if(rows>-1){
					msg.setMsg("修改成功");
				}else{
					msg.setMsg("修改失败");
				}
			}
		//返回消息
		return msg;
	}
	/**
	 * 修改上屏
	 * @param buId 用户id
	 * @return 返回根据id查询的数据
	 */
	@RequestMapping("/display")
	@ResponseBody
	public List<ListenUserRole> seleteById(@RequestParam(value = "id")String buId){
		//调用根据用户id查询所有的方法
		List<ListenUserRole> role = roleService.selectByPrimaryKey(buId);
		//返回查询的数据
		return role;
	}
	/**
	 * 删除
	 * @param buId 用户id
	 * @return 返回删除后的消息
	 */
	@RequestMapping("delete")
	@ResponseBody
	public JsonMsg delete(@RequestParam(value = "id")String buId){
		//创建消息对象
		JsonMsg msg=new JsonMsg();
		msg.setDatas(1);
		msg.setMsg("删除成功");
		//调用根据用户id删除的方法
		roleService.deleteByPrimaryKey(buId);
		//返回消息
		return msg;
	}
}

